﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;

namespace Mantenimiento.Interfaz
{
    public partial class Vehiculos_Edit : System.Web.UI.Page
    {
        private string _matricula;
        private Negocio.Vehiculo _vehiculo;
        protected void Page_Load(object sender, EventArgs e)
        {
            obtenerParametro();
            if (!IsPostBack)
                cargarDatosGeneral();
            cargarIncidenciasRevisiones();
        }

        private void obtenerParametro()
        {
            try
            {
                _matricula = Request["Matricula"].ToString();
                _vehiculo = Negocio.Vehiculo.obtener(_matricula);
            }
            catch (Exception ex)
            {
                _matricula = string.Empty;
            }
        }

        private void cargarDatosGeneral()
        {
            cargarExplotaciones();
            cargarModelos();
            cargarDatosVehiculo();
        }

        private void cargarDatosVehiculo()
        {
            txtMatricula.Text = _vehiculo.Matricula;
            txtHoras.Text = _vehiculo.Horas.ToString();
            txtKilometros.Text = _vehiculo.Kilometros.ToString();
            ddlExplotacion.Items.FindByValue(_vehiculo.IdExplotacion.ToString()).Selected = true;
            ddlModelos.Items.FindByValue(_vehiculo.IdModelo.ToString()).Selected = true;
            cbControlPorHoras.Checked = _vehiculo.ControlPorHoras;
        }

        private void cargarExplotaciones()
        {
            ddlExplotacion.DataSource = Negocio.Explotacion.obtenerTodas().OrderBy(z=>z.Nombre).ToList();
            ddlExplotacion.DataTextField = "Nombre";
            ddlExplotacion.DataValueField = "Id";
            ddlExplotacion.DataBind();
        }

        private void cargarModelos()
        {
            ddlModelos.DataSource = Negocio.Modelo.obtenerTodas().OrderBy(c => c.NombreConMarca).ToList();
            ddlModelos.DataTextField = "NombreConMarca";
            ddlModelos.DataValueField = "Id";
            ddlModelos.DataBind();
        }

        private void cargarIncidenciasRevisiones()
        {            
            rgIncidenciasRevisiones.DataSource = Negocio.IncidenciaRevision.obtenerxmatricula(_matricula).OrderByDescending(c=>c.Fecha);
            rgIncidenciasRevisiones.DataBind();
        }



        protected void rgIncidencias_ItemCommand(object source, GridCommandEventArgs e)
        {
            //UserControl userControl = Utilidades.ObtenerControl(Page.Controls, GridEditFormItem.EditFormUserControlID) as UserControl;
            Boolean bExito = true;
            Negocio.IncidenciaRevision oIncidencia = new Negocio.IncidenciaRevision();
            try
            {
                oIncidencia = (Negocio.IncidenciaRevision)e.Item.DataItem;

                switch (e.CommandName)
                {
                    case "InitInsertIncidencia":
                        Action_oIncidenciaAdd(_matricula);
                        break;
                    case "InitInsertRevision":
                        Action_oRevisionAdd(_matricula);
                        break;
                    case "PerformInsert":
                        break;
                    case "Edit":
                        Action_oIncidenciaRevisionEdit(oIncidencia.Id, oIncidencia.Bincidencia);
                        break;
                    case "Update":
                        break;
                    case "DeleteSelected":
                        break;
                    case "Delete":
                        Action_oIncidenciaRevisionDelete(oIncidencia.Id, oIncidencia.Bincidencia);
                        break;
                    case "SendNew":
                        break;
                    case "SendUpdate":
                        break;
                    case "RebindGrid":
                        break;
                    case "ExportExcel":
                        break;
                    case "EditSelected":
                        break;

                }
            }
            catch (Exception ex)
            {
            }
            if (bExito == false)
            {
                e.Canceled = true;
            }
        }


        private void Action_oIncidenciaAdd(string sMatricula)
        {
            Response.Redirect(string.Format("Incidencias_Add.aspx?Matricula={0}", sMatricula));
        }

        private void Action_oRevisionAdd(string sMatricula)
        {
            Response.Redirect(string.Format("Revisiones_Add.aspx?Matricula={0}", sMatricula));
        }

        private void Action_oIncidenciaRevisionEdit(int pId, bool bIncidencia)
        {
            if (bIncidencia)
                Response.Redirect(string.Format("Incidencias_Edit.aspx?Id={0}", pId));
            else
                Response.Redirect(string.Format("Revisiones_Edit.aspx?Id={0}", pId));
        }

        private void Action_oIncidenciaRevisionDelete(int pId, bool bIncidencia)
        {
            if (bIncidencia)
            {
                Negocio.Incidencia oInc = Negocio.Incidencia.obtener(pId);
                oInc.eliminar();
                string sUrl = string.Format("Vehiculos_Edit.aspx?Matricula={0}", _matricula);
                Response.Redirect(sUrl);
            }
            else
            {
                Negocio.Revision oRev = Negocio.Revision.obtener(pId);
                oRev.eliminar();
                string sUrl = string.Format("Vehiculos_Edit.aspx?Matricula={0}", _matricula);
                Response.Redirect(sUrl);
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            int iKilometros = 0;
            int iHoras = 0;
            try
            {
                iKilometros = int.Parse(txtKilometros.Text);
            }
            catch (Exception ex)
            {
            }
            try
            {
                iHoras = int.Parse(txtHoras.Text);
            }
            catch (Exception ex)
            {
            }
            _vehiculo.Kilometros = iKilometros;
            _vehiculo.Horas = iHoras;
            _vehiculo.ControlPorHoras = cbControlPorHoras.Checked;
            _vehiculo.IdExplotacion = int.Parse(ddlExplotacion.SelectedValue);
            _vehiculo.IdModelo = int.Parse(ddlModelos.SelectedValue);
            _vehiculo.guardar();
            Response.Redirect("Vehiculos.aspx");
        }
    }
}